<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1. 定义函数有几种方式，有什么区别？

      /*     两种
          1.声明式 function fn(){}
          2.表达(赋值)式 var fn = function(){} */

      // 2.return 关键字有那两种作用

      /*    1.返回结果
          2.中断函数执行 */

      // 3.函数实参数和形参个数不等时会发生什么？举例说明

      //   1.实参 > 形参  // not undefined,会报错
      function fn(a, b, c) {
        console.log(a); //1
        console.log(b); //2
        console.log(c); //3
        console.log(d); // not undeifned 报错
      }

      fn(1, 2, 3, 4);

      //   2.实参 < 形参  //  undefined未定义

      function fn2(a, b, c, d) {
        console.log(a); //1
        console.log(b); //2
        console.log(c); //3
        console.log(d); // undefined
      }

      fn2(1, 2, 3);

      // 4.请定义一个函数，该函数功能为，传入一个值，返回这个值的平方值;请再写一个函数,传入两个值，然后计算第一个值的第二个值的次方。如传入 x，y。求x的y次方是多少

      //   求平方
      var x = window.prompt("输入第一个值：") - 0;
      function fn(x) {
        var res = x * x;
        return res;
      }
      alert(fn(x));

      //求x的y次方
      var x = window.prompt("输入第一个值：") - 0;
      var y = window.prompt("输入第二个值：") - 0;
      var res = 1;
      function fun(x, y) {
        for (var i = 1; i <= y; i++) {
          res *= x;
        }
        console.log(res);
      }
      fun(x, y);

      // 5.请写出一个函数，功能为：传入 2 个值，则返回其中的最大值；请再写一个函数，传入 3 个值，返回其中的最大值

      //求最大值
      var a = window.prompt("输入第一个值：") - 0;
      var b = window.prompt("输入第二个值：") - 0;
      function Max(a, b) {
        if (a > b) {
          return a;
        } else {
          return b;
        }
      }
      alert("最大的值：" + Max(a, b));

      //求三个数中最大值
      function Maxs(a, b, c) {
        var max = a;
        if (max < b) {
          max = b;
        }
        if (max < c) {
          max = c;
        }
        return max;
      }
      alert(Maxs(75, 23, 89));

      // 6.请定义一个函数，输入一个 N 值，则计算出该值的阶乘，即：`n! = 1*2*3*4*5*6*...`
      var n = window.prompt("输入数值：") - 0;
      var res = 1;
      function fac(n) {
        for (var i = n; i > 0; i--) {
          res *= i;
        }
        return res;
      }
      alert(fac(n));
    </script>
  </body>
</html>
